1. Technical Field
This invention generally relates to programming interfaces for networked computer systems and more specifically relates to transactions in a client/server environment.
2. Background Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful that just a few years ago.
Computer systems typically include operating system software that control the basic function of the computer, and one or more software applications that run under the control of the operating system to perform desired tasks. For example, a typical IBM Personal Computer may run the OS/2 operating system, and under the control of the OS/2 operating system, a user may execute an application program, such as a word processor. As the capabilities of computer systems have increased, the software applications designed for high performance computer systems have become extremely powerful.
Other changes in technology have also profoundly affected how we use computers. For example, the widespread proliferation of computers prompted the development of computer networks that allow computers to communicate with each other. With the introduction of the personal computer (PC), the power and capabilities of computers became accessible to large numbers of people. Networks for personal computers were developed to allow individual users to communicate with each other. In this manner, a large number of people within a company could communicate simultaneously with a software application running on a computer system.
One computer network that has become very popular in recent years is the Internet. The Internet grew out of the modern proliferation of computers and networks, and has evolved into a sophisticated worldwide network of computer systems. One important part of the Internet is certain information displayed and linked together by web pages that collectively make up the “world-wide web” (WWW). A user at an individual PC (i.e., workstation) that wishes to access the WWW typically does so using a software application known as a web browser (also known as a client). A web browser makes a connection via the WWW to computers known as web servers, and receives information from the web servers for display on the user's workstation. Information displayed to the user is organized into pages constructed by a special language called Hypertext Markup Language (HTML).
Along with the growing popularity of the Internet, businesses have recognized that the Internet provides a new way to boost both sales and efficiency. If a potential customer can interact directly with a company's application software to purchase products and complete other similar activities, the transaction will be simplified. This increases the likelihood of customer acceptance and increases sales opportunities. While the WWW has been very successful in creating business opportunities, using the WWW as a means of conducting business over a network is not without certain difficulties.
In general, successfully conducting transactions with various software applications over the WWW requires fairly extensive knowledge of the interface requirements for the various of applications and the platforms that support these applications. It is often necessary to create an interface program that can serve as an intermediary between two other programs or process environments. One widely adopted interface standard used in the client/server environment is the Common Gateway Interface (CGI) programming model. The CGI programming model is one specific protocol or set of conventions used to provide an interface for communication and transaction support over the WWW. CGI programs are executable programs well known to those skilled in the art. Different CGI programs with different access procedures and programming interfaces are typically provided for accessing each different software application. A CGI program will extend the functionality of a web server application and, by so doing, allow a client using a web browser to access various software applications via the WWW through the CGI.
While the presently known CGI programming model has been quite successful, there are several significant limitations and a certain amount of processing restrictions that makes conducting transactions through current CGI programs somewhat cumbersome and undesirable. For example, each time a browser makes a request to a specific CGI program, a new CGI process is initiated by the web server to service that request. The request from the web browser is sent as a data stream to the CGI process and the CGI process reads the data stream and processes the request. After the CGI process has processed the web browser's request and returned the requested information to the web browser, the CGI process is terminated. Then, when the web browser makes another request, another instance of the CGI process will be initiated. This repetitive start and stop process involves a significant amount of system overhead, tending to make the communication process between the web browser and the CGI fairly inefficient.
In addition, since each web browser request results in the instantiation of a new instance of the CGI program, information that needs to be available from one web browser request to another must be maintained or stored outside of the process environment. This is typically accomplished by using relatively inefficient means such as writing the data to disk or returning the data to the web browser in a data stream from the web server. However, writing the data to disk is problematic if the web browser should terminate the pending transaction prematurely. Certain data may be stored for a future use that may never occur. This is especially true when a given web browser repeatedly submits multiple requests that are handled by the same CGI program. In addition, certain transactions which require multiple accesses to a resource by the web browser, such as database update transactions, cannot be maintained across multiple browser requests.
Finally, as the number of web users, providers, and web servers continues to rapidly expand, it will become increasingly important for a web browser to be able to reduce system overhead and interact more efficiently with CGI programs. Considering the projected proliferation of network traffic over the WWW, software applications that support the currently-known CGI program model may not have adequate system resources to support a large volume of web browser requests.
Without a CGI mechanism that is capable of providing improved methods of transaction support between software applications and web browsers on the world-wide web, transactions conducted between Internet users and software applications through CGIs will be excessively time-consuming and overly expensive. Additionally, valuable system resources may be unnecessarily expended in time-consuming overhead tasks, thereby reducing overall system efficiency.